Taylorは、ランダムから集中まで様々な生物の集中度合いを評価するための汎用法則Taylor’s power lawを提唱した。この法則は、 \(s^2=a\bar{x}^2\)で定義され、\(a\), \(b\)は種・発育段階によって固有に決まる定数である。もし\(a=1\), \(b=1\)であるならばポアソン分布となる。\(b>1\)ならば集中分布。Taylor’s power lawの両対数をとることによってパラメタ推定を行う。\(log{s^2}=log(a)+b log(\bar{x})\)なので、様々な地点で同じ性質を持つ害虫を複数回サンプリング調査して、各地点での個体数調査の平均値(\(\bar{x}\))と分散(\(s^2\))をプロットして両対数を取ると直線関係が見られるため、直線回帰を行うことで\(a\), \(b\)を決定することが出来る。以下ではShiomi et al (1976)のヤノネカイガラムシの調査データを使ってTaylow’s power lawのパラメタを決定する。
## Shiyomiらのデータの読み込み
x.bar <-c(0.25,0.24,0.95,2.0,7.15,33.8,0.5,0.57,3.77,4.94,9.16,22.45,44.9,2.0,1.46,21.98,0.5,0.37,0.98,1.71,2.68,5.92,13.42,65.30); # 平均値
s2<-c(0.25,0.32,5.53,13.22,87.88,822.85,0.5,1.21,33.03,40.15,90.4,350.5,855.98,0.01,2.11,607.22,0.5,0.63,3.16,9.05,18.8,103.65,376.59,1793.88); # 分散推定値
# Power lawのa,bの推定
out.pl<- summary(lm(log(s2)~log(x.bar))) # 両対数の直線回帰モデル(lm)のサマリーをout.plに代入
a.pl<- out.pl$coefficients[1,1]; b.pl<- out.pl$coefficients[2,1] # 直線回帰の結果のメンバーcoefficientsの[1,1]がa、[2,1]がb
paste("Taylor's power lawのパラメタaは:", round(a.pl, digit=2), "、パラメタbは:", round(b.pl, digit=2), sep="")
#描画
plot(log(x.bar), log(s2), xlab="log x", ylab="log s2"); title("power law");
lines(range(log(x.bar)), a.pl+ range(log(x.bar))*b.pl)
## [1] "Taylor's power lawのパラメタaは:0.74、パラメタbは:1.68"
逐次サンプル法は正確な害虫の密度推定ではなく、害虫密度がある閾値以下であるかどうかを判定することを主目的とする。いま、ある害虫が集中分布をしていて作物一株ごとの個体数が負の二項分布に従う時、\(n\)株調査して合計\(X_0\)匹の害虫を捕獲し、この時の平均害虫密度が要防除水準\(m_0\)であったとしよう。このとき、 \(m_0±t_{n-1}(0.95)\sqrt{(s^2/n)}\) Taylor’s power lawによると\(s^2=am_0^b\)となるので\(m_0±t_{n-1}(0.95)×\sqrt{(am_0^b)/n}\)これを合計捕獲数の式に直すと \(X_0=nm_0±t_{n-1}(0.95)×\sqrt{nam_0^b}\)。つまり、順番にコドラートを調査していって、合計捕獲数が式Xで表される曲線の間からはみ出した時、この害虫は要防除水準を超えている(下回っている)と判断できるのだ。
逐次サンプル法は、このよう防除水準よりも平均個体数がはるかに大きかったり小さかった場合、最小限のサンプル数で、調査を打ち切ることが出来るので非常に効率的である。ところが、平均個体数が要防除水準ぎりぎりであった場合には、いつまでも式Xではさまれる領域からはみ出すことが無く、永遠に調査を継続することになるかも知れない。そこで逐次サンプル法においては、事前に要防除水準からずれても良い振れ幅\(d_0\)を設定することを推奨している。つまり\(m_0\)の95%信頼限界幅が\(d_0\)になるように設定すると\(n_{max}=(Z (0.95)/d_0)^2am_0^b\)これにより、判定できない時の打ち切り回数\(n_{max}\)を設定することが出来る。
#Shiyomi et al (1976)ヤノネカイガラムシデータを例に逐次サンプル法を実行
# データの手入力、この順番に個体数をサンプリングしたことにする
test.seq<-c(2,32,10,5,7,6,3,8,2,1,9,6,2,29,3,0,1,3,5,8,1,3,21,3,2,1,1,68, 3,4,52,2,3,1,1,1,4,3,54,1,3,1,1,0,0,0,0,0,11,1,2,3,0,0,1,1,1,1,2,1,0,0);
m0<- 10; ## 要防除水準
d0<- 2.5; ## 許容されるズレ(どれだけずれてもOKか)
alpha<-0.05 ## 信頼区間計算のための水準
# 最大調査回数(標準正規分布の95パーセンタイルを使う)
n.max= floor(qnorm(1-alpha/2)^2/d0^2*(a.pl+b.pl*m0-m0+1)*m0)
# Taylor's power lawによる判定(自由度n-1のt分布パーセンタイルを使う)
PL <- function(n, flg) {
if(flg) { ## 上側
n*m0+qt(1-alpha/2, df=max(1,n-1))*sqrt(n*a.pl*m0^b.pl)
} else { ## 下側
n*m0-qt(1-alpha/2, df=max(1,n-1))*sqrt(n*a.pl*m0^b.pl)
}}
# 調査回数シーケンス
x<- 1:floor(n.max+10)
# Taylor's power law上限
PL.max <- PL(x, TRUE)
# Taylor's power law下限
PL.min <- PL(x, FALSE)
# 調査個体数合計
cum.test <- cumsum(test.seq)
# 調査打ち切り判定
first.upper<- min(x[cum.test[x]>PL.max])
first.under<- min(x[cum.test[x]<PL.min])
if(first.upper>first.under){
end <- first.under
paste(end, "回目で要防除水準以下と判定")
} else {
if(first.upper<first.under){
end <- first.uppper
paste(end, "回目で要防除水準以上と判定")
}}
#描画
plot(1:5,xlab="調査株数",ylab="合計捕獲害虫数", type="n", xlim=range(x), ylim=c(0,sum(test.seq)*2));
polygon(c(x, rev(x)), c(PL.max, rev(PL.min)), col = grey(.8), border=FALSE)
lines(rep(n.max,2), c(0,sum(test.seq)*2), lwd=2, lty=2);
lines(1:length(test.seq), cum.test, type="l", lwd=3, col="red")
points(end, cum.test[end], pch=16, col="red", cex=2)
text(end, cum.test[end], paste(end, "回目で終了", sep=""), pos = 1)
points(n.max, cum.test[n.max], pch=16, col="black", cex=2)
text(n.max, cum.test[n.max], paste("最大調査回数(", n.max, "回)", sep=""), pos = 1)
## [1] "18 回目で要防除水準以下と判定"